package com.huawei.M01.iterator;

import java.util.Arrays;

/**
 * 令牌可能的两种使用方法如下：
 * <p>
 * 如果你至少有 token[i] 点 能量 ，可以将令牌 i 置为正面朝上，失去 token[i] 点 能量 ，并得到 1 分 。
 * 如果我们至少有 1 分 ，可以将令牌 i 置为反面朝上，获得 token[i] 点 能量 ，并失去 1 分 。
 * 每个令牌 最多 只能使用一次，使用 顺序不限 ，不需 使用所有令牌。
 * <p>
 * 在使用任意数量的令牌后，返回我们可以得到的最大 分数 。
 * <p>
 * <p>
 * 思路：想对tokens进行排序，然后左边用power换能量，右边用分数换能量
 */
public class Tokens {
    public int bagOfTokensScore(int[] tokens, int power) {
        int res = 0;
        int left = 0;
        int right = tokens.length - 1;
        Arrays.sort(tokens);
        while (left <= right) {
            // 从左边开始，用power换分数
            while (left <= right && tokens[left] <= power) {
                power -= tokens[left];
                left++;
                res++;
            }
            if (left < right && res > 0) {
                power += tokens[right];
                right--;
                res--;
            }else {
                break;
            }
        }
        return res;
    }

    public static void main(String[] args) {
        Tokens tokens = new Tokens();
        int[] tokes = {81,91,31};
        int i = tokens.bagOfTokensScore(tokes, 73);
        System.out.println(i);

    }
}
